<?php
/**
* entrer du fichier commentaire ici.
*
* PHP version 5.1.6
*
* @package   package_name
* @author    Christophe Hebet <christophe.hebet@dgfip.finances.gouv.fr>
* @copyright 2013 - DGFiP
*/

/**
 * les actions sont chargé de communiquer avec le model, et de préparer les données avant de les envoyer à l'objet
 * réponse qui se charge de les communiquer à la vue.
 *
 * @author Christophe Hebet <christophe.hebet@dgfip.finances.gouv.fr>
 *
 */
class Test extends SmartbokController
{
    /**
     * exemple de fonction action, les actions ne renvoies pas de resultat mais affecte le resultat dans des variables
     * inexistantes du controller. Ces variables seront automatiquement assignées aux templates.
     */
    public function testOra() {
        $this->addTemplate('test.tpl.php');
        $this->_page = 'titre de la page';
        //$this->bodyJs = "onclick=alert('pwet')";
        $tableau = array('test'=>'variable tableau',
                        'test2'=>'2eme variable');
        SmartbokMessage::addMessage(SmartbokMessage::ERR, 'ceci est un message d\'erreur');
        $this->toto = 'c\'est toto';
        $this->tableau = $tableau;

        $this->menu = array('idPageActive' => 1); //indique l'identifiant du menu a activer
        try {
            $data = new modeleTest($this->bdd);
            $tab2['insert']= $data->testInsert();
            $tab2['update']= $data->testUpdate();
            $tab2['select']= $data->testSelect();
            $tab2['delete']= $data->testDelete();
        } catch (Exception $e) {
            SmartbokMessage::addMessage(SmartbokMessage::ERR, SmartbokDB::SBK_ERR_CONNEXIONDB);
            $tab2 = array();
        }
        $this->tab2 = $tab2;
    }

    public function testPostGres() {
        $this->menu = array('idPageActive' => 1);
        $this->addTemplate('test.tpl.php');
        $this->_page = 'test interrogation postgre';
        try {

            $data = new modeleTestPgsql($this->bdd);
            $tab2['insert']= $data->testInsert();
            $tab2['update']= $data->testUpdate();
            $tab2['select']= $data->testSelect();
            $tab2['delete']= $data->testDelete();
        } catch (Exception $e) {
            SmartbokMessage::addMessage(SmartbokMessage::ERR, SmartbokDB::SBK_ERR_CONNEXIONDB);
            $tab2 = array();
        }
        $this->tab2 = $tab2;
    }

    public function afficherFormulaire() {
        $this->_profilsAutorises = array('AG');
        $this->_referers = array('index.php', '');
        if ($this->controlerAcces() === true) {
            // traitement a exécuter
            if (count($_POST) > 0) {
                $testFormulaire = $this->_creerFormulaire();

                $this->_formulaireAfficherChampsErreur = true;
                $this->_formulaireInsererDonneesPostees = true;
            }
            $this->menu = array('idPageActive' => 1);
            $this->addTemplate('form.tpl.php');
            $this->_page = 'test de formulaire';
            $this->titreBloc = 'test d\'affichage d\'un formulaire';
            $this->ajouterScript('smartbok/js/calendrier.js');
            $this->ajouterScript('smartbok/js/test.js');
            $this->ajouterScript('smartbok/js/tempo.js');
        }
        else {
            $this->addTemplate('erreur.tpl.php');
        }
    }

    private function _creerFormulaire() {
        $form = new SmartbokFormulaire();
        $form->ajouterChamp(array(SmartbokChamp::SBK_TYPE_TEXTE, 'texteid', 'texte', 'Champ Texte', true));

        $param = array(SmartbokChamp::SBK_TYPE_DATE, 'dateid', 'date', 'Champ Date', true);
        $champ = new SmartbokChamp($param);
        $form->ajouterChamp($champ);
        $param = array('_valeur' => 'toto@free.fr',
                       '_id' =>'mailid',
                       '_type' => SmartbokChamp::SBK_TYPE_MAIL,
                       '_name' => 'mail',
                       '_libelle' => 'Champ MAil',
                       '_obligatoire' => false);
        $champ = new SmartbokChamp($param);
        $form->ajouterChamp($champ);

        $form->ajouterChamp(array(SmartbokChamp::SBK_TYPE_NOMBRE, 'nombreid', 'nombre', 'Champ nombre', true));
        $form->ajouterChamp(array(SmartbokChamp::SBK_TYPE_TEXTE, 'checkid', 'check', 'case à cocher', false));
        $form->ajouterChamp(array(SmartbokChamp::SBK_TYPE_TEXTE, 'radioid', 'radio', 'bouton radio', false));
        $form->ajouterChamp(array(SmartbokChamp::SBK_TYPE_TEXTE, 'textareaid', 'textarea', 'Zone de texte', true));
        $form->ajouterChamp(array(SmartbokChamp::SBK_TYPE_TEXTE, 'selectid', 'selection[]', 'Zone de Selection', false));


        //$form->ajouterListeValeurChamp('texte', 'toto');
        //$form->ajouterListeValeurChamp('texte', array('titi', 'tutu', 'tata', 'toto'));
        $form->ajouterControleChamp('texte', SmartbokChamp::SBK_TEXTE_CONTROLE_LONGUEUR, 10);
        $form->ajouterControleChamp('mail', SmartbokChamp::SBK_TEXTE_CONTROLE_REGEXP, '#.*@free.fr#');
        // $form->modifierLibelleMessageErreur('texte', SmartbokChamp::SBK_TEXTE_CONTROLE_LONGUEUR, 'mon message personnélisé#NOMCHAMP#');
        $form->ajouterControleChamp('date', SmartbokChamp::SBK_DATE_CONTROLE_BORNES_IN, array('01/01/2013','31/12/2013'));
        //$form->ajouterControleChamp('nombre', SmartbokChamp::SBK_DATE_CONTROLE_BORNES_OUT, array('01/01/2013','31/12/2013'));
        $form->ajouterControleChamp('nombre', SmartbokChamp::SBK_NOMBRE_CONTROLE_VIRGULE, 3);
        $form->ajouterControleApplicatif('nombre', 'controlePerso', 10, $this);

        $controles = $form->controlerFormulaire();
        if ($controles !== true) {
            $this->_listeChampErreur = $controles;
        }
    }

    static public function controlePerso($params) {
        SmartbokMessage::addMessage(SmartbokMessage::ERR, 'controle applicatif en erreur : '. $params);
        return false;
    }
}